package com.platform.aspect;


import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * web日志注解
 *
 * @author qy Created on 2020/1/6
 **/
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target(ElementType.METHOD)
public @interface WebLog {
    /**
     * 主题
     */
    @AliasFor(value = "theme")
    String value() default "";

    /**
     * 描述值
     */
    @AliasFor(value = "value")
    String theme() default "";

    /**
     * 操作类型
     */
    OpType type() default OpType.ADD;

    /**
     * 根变量类型
     */
    Class<?> root();

    /**
     * 参数列表,当root为一般对象时
     */
    String[] params() default {};

    /**
     * 所属模块名称
     */
    String moduleName();

    /**
     * 操作枚举
     */
    enum OpType {
        /**
         * 新增
         */
        ADD("新增"),

        /**
         * 修改
         */
        MOD("修改"),

        /**
         * 删除
         */
        DEL("删除"),

        /**
         * 登录
         */
        LOG_IN("登录"),

        /**
         * 查看
         */
        SEARCH("查看"),

        /**
         * 单条或多条提交审批
         */
        AUDIT("单条或多条提交审批"),

        /**
         * 批量提交审批
         */
        AUDIT_BATCH("批量提交审批"),

        MOD_BATCH("批量修正"),

        DEL_BATCH("批量删除"),
        /**
         * 其他
         */
        OTH("其他");



        /**
         * 描述
         */
        private String text;

        OpType(String text) {
            this.text = text;
        }

        public String getText() {
            return text;
        }

        private void setText(String text) {
            this.text = text;
        }

        public static OpType getInstance(String text) {
            OpType opType = OpType.OTH;
            opType.setText(text);
            return opType;
        }
    }
}
